 1.HBase shell 基本操作
   
   1).进入Hbase客户端命令操作界面
   hbase shell
   2).查看帮助命令
   hbase(main):001:0> help
   3).查看当前数据库中有哪些表
   hbase(main):006:0> list
   4).创建一张lagou表， 包含base_info、extra_info两个列族
   hbase(main):001:0> create 'lagou', 'base_info', 'extra_info'
   或者(Hbase建表必须指定列族信息)
   create 'lagou', {NAME => 'base_info', VERSIONS => '3'},{NAME =>'extra_info',VERSIONS => '3'}
   VERSIONS 是指此单元格内的数据可以保留最近的 3 个版本
   5).添加数据操作
   向lagou表中插入信息，row key为 rk1，列族base_info中添加name列标示符，值为wang
   hbase(main):001:0> put 'lagou', 'rk1', 'base_info:name', 'wang'
   向lagou表中插入信息，row key为rk1，列族base_info中添加age列标示符，值为30
   hbase(main):001:0> put 'lagou', 'rk1', 'base_info:age', 30
   向lagou表中插入信息，row key为rk1，列族extra_info中添加address列标示符，值为shanghai
   hbase(main):001:0> put 'lagou', 'rk1', 'extra_info:address', 'shanghai'
   6).查询数据
   (1).通过rowkey进行查询
   获取表中row key为rk1的所有信息
   hbase(main):001:0> get 'lagou', 'rk1'
   (2).查看rowkey下面的某个列族的信息
   获取lagou表中row key为rk1，base_info列族的所有信息
   hbase(main):001:0> get 'lagou', 'rk1', 'base_info'
   (3).查看rowkey指定列族指定字段的值
   获取表中row key为rk1，base_info列族的name、age列标示符的信息
   hbase(main):008:0> get 'lagou', 'rk1', 'base_info:name', 'base_info:age'
   (4).查看rowkey指定多个列族的信息
   获取lagou表中row key为rk1，base_info、extra_info列族的信息
   hbase(main):010:0> get 'lagou', 'rk1', 'base_info', 'extra_info'
   或者
   hbase(main):011:0> get 'lagou', 'rk1', {COLUMN => ['base_info', 'extra_info']}
   或者
   hbase(main):012:0> get 'lagou', 'rk1', {COLUMN => ['base_info:name','extra_info:address']}
   (5).指定rowkey与列值查询
   获取表中row key为rk1，cell的值为wang的信息
   hbase(main):001:0> get 'lagou', 'rk1', {FILTER => "ValueFilter(=,'binary:wang')"}
   (6).指定rowkey与列值模糊查询
   获取表中row key为rk1，列标示符中含有a的信息
   hbase(main):001:0> get 'lagou', 'rk1', {FILTER => "(QualifierFilter(=,'substring:a'))"}
   (7).查询所有数据
   查询lagou表中的所有信息
   hbase(main):000:0> scan 'lagou'
   (8).列族查询
   查询表中列族为 base_info 的信息
   hbase(main):001:0> scan 'lagou', {COLUMNS => 'base_info'}
   hbase(main):002:0> scan 'lagou', {COLUMNS => 'base_info', RAW => true, VERSIONS=> 3}
   (9).指定多个列族与按照数据值模糊查询
   查询lagou表中列族为 base_info 和 extra_info且列标示符中含有a字符的信息
   hbase(main):001:0> scan 'lagou', {COLUMNS => ['base_info', 'extra_info'], FILTER
=> "(QualifierFilter(=,'substring:a'))"}
   (10).rowkey的范围值查询（非常重要）
   查询lagou表中列族为base_info，rk范围是[rk1, rk3)的数据（rowkey底层存储是字典序）
   按rowkey顺序存储。
   hbase(main):001:0> scan 'lagou', {COLUMNS => 'base_info', STARTROW => 'rk1',ENDROW => 'rk3'}
   (11).指定rowkey模糊查询
   查询lagou表中row key以rk字符开头的
   hbase(main):001:0> scan 'lagou',{FILTER=>"PrefixFilter('rk')"}
   7).更新数据
   更新操作同插入操作一模一样，只不过有数据就更新，没数据就添加
   (1).更新数据值
   把lagou表中rowkey为rk1的base_info列族下的列name修改为liang
   hbase(main):030:0> put 'lagou', 'rk1', 'base_info:name', 'liang'
   8).删除数据和表
   (1).指定rowkey以及列名进行删除
   删除lagou表row key为rk1，列标示符为 base_info:name 的数据
   hbase(main):002:0> delete 'lagou', 'rk1', 'base_info:name'
   (2).指定rowkey，列名以及时间戳信息进行删除
   删除lagou表row key为rk1，列标示符为base_info:name的数据
   scan 'lagou', {COLUMNS => 'base_info', RAW => true, VERSIONS => 3}
ROW COLUMN+CELL rk1 column=base_info:name, timestamp=1600660633870,value=zhao
rk1 column=base_info:name, timestamp=1600660627447,value=li
rk1 column=base_info:name, timestamp=1600660619655,value=wang
   hbase(main):033:0> delete 'lagou', 'rk1', 'base_info:name',1600660619655
   hbase(main):023:0> scan 'lagou', {COLUMNS => 'base_info', RAW => true, VERSIONS => 3}
ROW COLUMN+CELL
rk1 column=base_info:name, timestamp=1600660633870,value=zhao
rk1 column=base_info:name, timestamp=1600660627447,value=li
rk1 column=base_info:name, timestamp=1600660619655,type=Delete
rk1 column=base_info:name, timestamp=1600660619655,value=wang
1 row(s) in 0.0070 seconds
   (3).删除列族
   删除 base_info 列族
   hbase(main):001:0>
   hbase(main):035:0> alter 'lagou', 'delete' => 'base_info'
   (4).清空表数据
   删除lagou表数据
   hbase(main):001:0> truncate 'lagou'
   (5).删除表
   删除lagou表
   #先disable 再drop
   hbase(main):036:0> disable 'lagou'
   hbase(main):037:0> drop 'lagou'
   #如果不进行disable，直接drop会报错
   ERROR: Table user is enabled. Disable it first.